import axios from 'axios'
import 'element-ui/lib/theme-chalk/index.css';
import {MessageBox} from 'element-ui'
import { Loading } from 'element-ui';
import {testToken} from '../../utils/tools.js'
import Vue from 'vue'

let loadingOptions = {
      lock: true,
      text: 'Loading',
      spinner: 'el-icon-loading',
      background: 'rgba(0, 0, 0, 0.7)'
    }

// 创建axios实例
const service = axios.create({
  // baseURL: process.env.BASE_API, // node环境的不同，对应不同的baseURL
  baseURL: process.env.NODE_ENV!=='production'?'/api':'/api', // node环境的不同，对应不同的baseURL
  timeout: 10000, // 请求的超时时间
  //设置默认请求头，使post请求发送的是formdata格式数据// axios的header默认的Content-Type好像是'application/json;charset=UTF-8',我的项目都是用json格式传输，如果需要更改的话，可以用这种方式修改
  headers: {
    // "Content-Type": "application/x-www-form-urlencoded",
    "Content-Type": "application/json;charset=utf-8",
    // "SSO_TOKEN":''
  },
  // transformRequest: [function (data) {
  //   let newData = ''
  //   for (let k in data) {
  //     newData += encodeURIComponent(k) + '=' + encodeURIComponent(data[k]) + '&'
  //   }
  //   debugger
  //   return newData
  // }],
  withCredentials: true // 允许携带cookie
})

// 发送请求前处理request的数据
axios.defaults.transformRequest = [function (data) {
  let newData = ''
  for (let k in data) {
    newData += encodeURIComponent(k) + '=' + encodeURIComponent(data[k]) + '&'
  }
  return newData
}]

// request拦截器
service.interceptors.request.use(
  config => {
    // Loading.service(loadingOptions)
    // 发送请求之前，要做的业务
    // 获取token
    // let token=JSON.parse(localStorage.getItem('token'))
    // let tokenType="SSO_TOKEN"
    // if(localStorage.getItem('tokenType')){
    //   tokenType=localStorage.getItem('tokenType')
    // }
    // if(!token){
    //   token=null
    // }

    // 设置默认请求头
    if(config.url.indexOf('.json')!==-1){
      // config.url = config.url
      config.baseURL = ''
    }else{
      // config.url = config.url
      if(process.env.NODE_ENV!=='production'){
          config.baseURL='/api'
      }else{
        config.baseURL='/api'
      }
    }

    // 设置默认请求头
    config.headers["Content-Type"]="application/json;charset=utf-8"
    // config.headers[tokenType]=token

    return config
  },
  error => {
    return Promise.reject(error)
  }
)

// response拦截器
service.interceptors.response.use(
  response => {
    // setTimeout(() => {
    //   Loading.service(loadingOptions).close()
    // }, 1000);
    // 数据响应之后，要做的业务
    // if(response.data.code&&response.data.code!==1){
    //   Vue.prototype.$message.error(response.data.code+' : '+response.data.msg)
    // }
    return response
  },
  error => {
    // if(error.response.status===401){
    //   localStorage.removeItem('token')
    //   localStorage.removeItem('tokenType')
    //   localStorage.removeItem('userInfo')
    //   let flag= JSON.parse(localStorage.getItem('flag'))
    //   if(!flag||flag===undefined){
    //     Vue.prototype.$message.error(error.response.status+' : '+error.response.data)
    //     localStorage.setItem('flag',true)
    //   }
    //   window.location.href=data
    // }else{
    //   Vue.prototype.$message.error(error.response.status+' : '+error.response.data.content.message)
    // }

    Vue.prototype.$message.error(error.response.status+' : '+error.response.data.msg)
    return Promise.reject(error)
  }
)

service.defaults.withCredentials =true;

export default service
